草庐IT

TypeScript算法题实战——剑指 Offer篇(1)

全部标签

javascript - 查找点属于哪个六边形的高效算法

我试图从以下方面找到一种更有效的方法来确定一个点属于哪个六边形:一组点-为了论证,10000点。一组六边形的中心点,大约1000个六边形。每个点都属于一个六边形,一些(大多数)六边形是空的。六边形形成一个完美的网格,一个六边形的点从左上角开始(它将与总面积的边缘重叠)。我目前的解决方案有效,但相当慢n*(mlogm)我认为,其中n=length(points)和m=length(六边形)。我怀疑我可以做得比这好得多,想到的一个解决方案是根据点和六边形到某个任意点(可能是中间,可能是Angular)的距离对点和六边形进行排序(仅一次),然后迭代在这些点和六边形的子集上,从第一个六边形到该

javascript - JavaScript 中的最近对算法

我正在尝试实现分而治之算法,以使用JavaScript在随机生成的点集中找到最近的一对点。该算法应该在O(nlogn)时间内运行,但它比简单的蛮力算法运行时间要长得多,后者应该是O(n^2)。我创建了两个jsfiddle,为16000个点的数组计算算法时间:DivideandConquerBruteForce我的假设是,分而治之之所以如此缓慢,是因为JavaScript数组实际上是哈希表。是否有可能显着加快JavaScript中的算法?如果是这样,执行此操作的最佳方法是什么? 最佳答案 一眼看去,您的合并函数分配了过多的内存(大致顺

javascript - 布料仿真系统并行化算法?

可以使用以下算法完成简单的布料模拟:deftick(dt):forp1inparticles:forboundinp.bounds:p2=bound.particlep2.vel+=p1.pos+bound.stable_pos-p2.posp1.pos+=p1.vel*dt作为测试,我尝试了implementingit在JavaScript中。不幸的是,这很难扩展。随着粒子数量的增加,性能下降得非常快,并且限制非常低。有没有办法并行化这个算法?你能把它描述成一个简单的伪代码吗? 最佳答案 下面是平行布仿真设计的详细说明:http:

javascript - Typescript 中的工厂函数使用和不使用 new 关键字声明文件

以下代码将在ES5中创建一个工厂函数:functionMyClass(val){if(!(thisinstanceofMyClass)){returnnewMyClass(val);}this.val=val;}可以使用或不使用new关键字调用此函数:vara=newMyClass(5);varb=MyClass(5);这在Typescript中工作正常,但是我不知道如何使用merging创建声明文件描述了这两种行为。有办法做到这一点吗? 最佳答案 interfaceMyClass{val:{};}interfaceMyClassC

javascript - 如何使用 TypeScript 编译器 (TSC) 解析 Node.js ES6 (ESM) 模块。 TSC 不发出正确的文件扩展名

我正在尝试将我的TypeScript项目转换为JavaScript,但是,似乎有些不对劲。我将项目配置为通过"module":"ES6"解析为ES6模块(又名ESM)设置,但不能解决问题。这就是我的tsconfig.json配置如下:{"compilerOptions":{"module":"es6","target":"es6","lib":["es6"],"sourceMap":true,}}使用一对模块的测试用例:我使用两个模块编写了一个简单的测试用例senario。第一个模块—module1.ts—只导出一个常量,如下所示:>exportconsttestText="Itwor

javascript - typescript 路径映射未在 Node 应用程序中翻译

目前在node.js应用程序中使用typescript。我已经编译了我的应用程序,并且正在使用typescript'spathmappingfeature.'api/*'应该在根文件夹中查找。在开发工作中使用以下内容:nodemon--watchsrc-ets,tsx--exects-node-rtsconfig-paths/register--disableWarnings./src/index.tstsconfig-paths/register允许正确翻译require并且ts-node将正确执行/运行应用程序。现在,当我转向生产时,问题就来了。过去在生产中,我只是在文件夹上运行t

javascript - vue 2、typescript、mocha 和 karma 的代码覆盖率

我们将Vue2与Typescript和webpack3结合使用。Vuex用于状态管理。我们的测试与Karma以及Mocha、Sinon、Expect和Avoriaz一起运行。一切都很好,但我尝试使用Istanbul获得代码覆盖率,以更好地直观表示缺少哪些测试。文件夹结构的小型表示来源组件分享按钮按钮.vue按钮.tsindex.ts...测试单位组件分享按钮按钮.spec.test.tskarma.conf.jskarma.coverage.jsindex.ts...按钮.vuebutton.tsimport{Component,Prop,Vue}from'vue-property-d

javascript - 是否可以在 TypeScript 中使构造函数静态化?

我阅读了TypeScript中的静态构造函数,并亲自尝试了它,但它不起作用。我想通过它初始化一个静态变量(该方法只能调用一次)但是我得到以下编译器错误:Error:'static'modifiercannotappearonaconstructordeclaration.代码:exportclassDataManagement{privatestaticsubjects:string[];staticconstructor(){DataManagement.subjects=[];//somemorecodehere}} 最佳答案

javascript - AngularJS 最佳实践——模板与 Javascript

默认情况下,当用户导航到路由时,Angular从服务器获取HTML模板。考虑到这一点,想象一下这个场景:用户加载Angular应用。主视图有一个名为“订单”的子页面。在用户研究主视图的同时,新版本的应用程序已投入生产。新版本使用新的Javscript和HTML完全重写了订单页面。用户导航到订单页面。Javascript已在步骤1中由浏览器加载,因此在重新加载应用程序之前,用户使用的是旧版本。但是新模板是在导航时从服务器获取的。所以现在Javascript和模板是我们的同步!我关于Javascript/HTML不同步的假设是否正确?如果是,是否有与此问题相关的最佳实践?我想一个解决方案是

Javascript扫描线算法查找具有相同x坐标的所有元素

我正在尝试通过使用PUREJavascript(没有其他框架)来实现线扫描算法,它基本上从左到右扫描屏幕并查看共享的所有元素(包括重叠元素)相同的x坐标。例如我有6个带有黑色边框的div元素,它们都随机布局在屏幕上。出于说明目的,我使用垂直的蓝色虚线从左到右扫描整个平面。目标是报告该行经过的所有元素。对于上面的示例,我们如何报告DivA、DivE、DivD以及hyperlinkD在DivD中使用JavaScript? 最佳答案 你可以通过getBoundingClientRectmethod获取元素的位置.然后遍历它们并检查它们是否